//
//  Swift入门 - 构造函数.swift
//  APSwift
//
//  Created by AbnerPei on 2021/9/24.
//

/**
 - [Initialization](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html)
 - [构造过程](https://swiftgg.gitbook.io/swift/swift-jiao-cheng/14_initialization)
 */

/**
 Fahrenheit:  华氏温度
 Celsius:     摄氏温度
 Kelvin:      开氏度    1开氏度相当于1摄氏度
 */

/**
 ## 必知必会
 - 类和结构体在创建实例时，必须为所有存储型属性设置合适的初始值。
 - 可以在构造器中为存储型属性设置初始值，也可以在定义属性时分配默认值。
 - 当你为存储型属性分配默认值或者在构造器中设置初始值时，它们的值是被直接设置的，不会触发任何属性观察者。
 */

import Foundation

//MARK: ① - 不带形参的构造器`init`
struct Fahrenheit {
    var temperature: Double
    /// 不带形参的构造器`init`
    init() {
        temperature = 36.0
    }
}

func printFahrenheit() {
    let f = Fahrenheit()
    print("The default temperature is \(f.temperature)° Fahrenheit")
}


//MARK: ② - 默认属性值
/// 设置一个默认值比每次都在构造器中赋值要好
struct Fahrenheit1 {
    var temperature = 36.0
}

/// 自定义构造过程
